
package com.insigma.business.qrcode.job._bff;


import com.insigma.business.qrcode.common.annotation.ApiServiceType;
import com.insigma.business.qrcode.common.dto.BaseApiGetRequest;
import com.insigma.business.qrcode.common.template.BasePagingResponse;
import com.insigma.business.qrcode.common.vo.BaseDeleteRequest;
import com.insigma.business.qrcode.common.vo.BaseResponse;
import com.insigma.business.qrcode.job.dto.request.JobFavoriteInsertRequest;
import com.insigma.business.qrcode.job.dto.request.JobRecruitPositionInsertRequest;
import com.insigma.business.qrcode.job.dto.request.JobRecruitPositionSearchRequest;
import com.insigma.business.qrcode.job.dto.request.JobRecruitPositionUpdateRequest;
import com.insigma.business.qrcode.soldier.dto.ExcelResultBO;
import com.insigma.business.qrcode.soldier.dto.JobRecruitPositionDTO;
import com.insigma.business.qrcode.job.dto.*;

import java.util.List;


public interface JobRecruitPositionBFFProvider {

    
    @ApiServiceType(value = "all.ss.job.orgRecruitPosition.search", name = "搜索分页OrgRecruitPosition", desc = "搜索分页OrgRecruitPosition")
    BasePagingResponse<List<JobRecruitPositionDTO>> searchOrgRecruitPosition(
            final JobRecruitPositionSearchRequest orgRecruitPositionSearchRequest);


    @ApiServiceType(value = "open.ss.job.position.search", name = "搜索分页OrgRecruitPosition", desc = "搜索分页OrgRecruitPosition")
    BasePagingResponse<List<JobRecruitPositionDTO>> searchOrgRecruitPositionForZZD(
            final JobRecruitPositionSearchRequest orgRecruitPositionSearchRequest);


    @ApiServiceType(value = "all.ss.job.recruit.position.company.search", name = "搜索分页OrgRecruitPosition", desc = "搜索分页OrgRecruitPosition")
    BasePagingResponse<List<JobRecruitPositionDTO>> searchCompanyRecruitPosition(
            final JobRecruitPositionSearchRequest orgRecruitPositionSearchRequest);


    @ApiServiceType(value = "all.ss.job.recruit.fair.position.company.search", name = "搜索分页OrgRecruitPosition", desc = "搜索分页OrgRecruitPosition")
    BasePagingResponse<List<JobRecruitPositionDTO>> searchCompanyRecruitPositionOfFair(
            final JobRecruitPositionSearchRequest orgRecruitPositionSearchRequest);


    @ApiServiceType(value = "all.ss.job.orgRecruitPosition.view", name = "查看单条职位详情", desc = "查看单条职位详情")
    BaseResponse<JobRecruitPositionDTO> getOrgRecruitPosition(final BaseApiGetRequest baseGetRequest);


    @ApiServiceType(value = "all.ss.job.orgRecruitPosition.add", name = "新增OrgRecruitPosition", desc = "新增OrgRecruitPosition", opsLog = "招聘")
    BaseResponse<String> insertMyCompanyPosition(
            final JobRecruitPositionInsertRequest orgRecruitPositionInsertRequest);


    @ApiServiceType(value = "all.ss.job.recruit.position.company.add", name = "新增OrgRecruitPosition", desc = "新增OrgRecruitPosition", opsLog = "招聘")
    BaseResponse<String> insertCompanyRecruitPosition(final JobRecruitPositionInsertRequest orgRecruitPositionInsertRequest);


    @ApiServiceType(value = "all.ss.job.orgRecruitPosition.modify", name = "修改OrgRecruitPosition", desc = "修改OrgRecruitPosition", opsLog = "招聘")
    BaseResponse<Integer> updateOrgRecruitPosition(
            final JobRecruitPositionUpdateRequest orgRecruitPositionUpdateRequest);


    @ApiServiceType(value = "all.ss.job.recruit.position.type.tree", name = "获得岗位类型tree", desc = "获得岗位类型tree")
    BaseResponse<List<JobRecruitPositionTypeDTO>> getPositionTypeTree();


    @ApiServiceType(value = "open.ss.job.position.type.tree", name = "获得岗位类型tree", desc = "获得岗位类型tree")
    BaseResponse<List<JobRecruitPositionTypeDTO>> getPositionTypeTreeForZZD();


    @ApiServiceType(value = "all.ss.job.recruit.position.remove", name = "删除OrgRecruitPosition", desc = "删除OrgRecruitPosition", opsLog = "招聘")
    BaseResponse<Integer> deleteOrgRecruitPosition(final BaseDeleteRequest deleteRequest);


    @ApiServiceType(value = "all.ss.job.recruit.position.publish", name = "上架/下架职位", desc = "上架/下架职位", opsLog = "招聘")
    BaseResponse<Boolean> offShelfRecruitPosition(JobRecruitPositionUpdateRequest request);


    @ApiServiceType(value = "all.ss.job.recruit.position.check", name = "审核职位", desc = "审核职位", opsLog = "招聘")
    BaseResponse<Boolean> checkRecruitPosition(final JobRecruitPositionUpdateRequest request);


    @ApiServiceType(value = "gov.ss.job.recruit.position.batch.check", name = "批量审核", desc = "批量审核", opsLog = "招聘")
    BaseResponse<Boolean> batchCheckRecruitPosition(final JobRecruitPositionUpdateRequest request);


    @ApiServiceType(value = "test.ss.job.recruit.position.recommend", name = "推荐职位", desc = "推荐职位")
    BaseResponse<Boolean> testToRecommendPosition(final JobRecruitPositionUpdateRequest request);


    @ApiServiceType(value = "all.ss.job.recruit.position.user.search", name = "查询职位列表", desc = "查询职位列表")
    BasePagingResponse<List<JobRecruitPositionDTO>> searchUserRecruitPosition(
            final JobRecruitPositionSearchRequest orgRecruitPositionSearchRequest);


    @ApiServiceType(value = "all.ss.job.recruit.position.zph.search", name = "查询招聘会数据", desc = "查询招聘会数据")
    BasePagingResponse<List<JobRecruitPositionDTO>> searchUserRecruitPositionOfZph(
            final JobRecruitPositionSearchRequest orgRecruitPositionSearchRequest);


    @ApiServiceType(value = "all.ss.job.recruit.position.mine.favorite.add", name = "收藏职位", desc = "收藏职位", opsLog = "招聘")
    BaseResponse<String> insertJobPositionFavorite(final JobFavoriteInsertRequest jobFavoriteInsertRequest);


    @ApiServiceType(value = "all.ss.job.recruit.position.mine.favorite.search", name = "搜索分页OrgRecruitPosition", desc = "搜索分页OrgRecruitPosition")
    BasePagingResponse<List<JobRecruitPositionDTO>> searchMyFavoritePosition(
            final JobRecruitPositionSearchRequest orgRecruitPositionSearchRequest);



    @ApiServiceType(value = "all.ss.job.recruit.fair.position.company.add", name = "插入线上招聘会职位", desc = "插入线上招聘会职位", opsLog = "招聘")
    BaseResponse<String> insertCompanyRecruitPositionOfFair(final JobRecruitPositionInsertRequest orgRecruitPositionInsertRequest);


    @ApiServiceType(value = "all.ss.job.recruit.position.company.export", name = "导出岗位", desc = "导出岗位")
    BaseResponse<ExcelResultBO> exportCompanyRecruitPosition(final JobRecruitPositionSearchRequest orgRecruitPositionSearchRequest);


    @ApiServiceType(value = "all.ss.job.recruit.position.status.search", name = "导出岗位", desc = "导出岗位")
    BasePagingResponse<List<JobRecruitPositionDTO>> searchJobStats(CommonLedgerStatsRequest request);

}
